package com.deer.wms.ASN.manage.service;

import com.deer.wms.ASN.manage.model.qc.QcRecord;
import com.deer.wms.ASN.manage.model.qc.QcRecordCriteria;
import com.deer.wms.ASN.manage.model.qc.QcRecordDto;
import com.deer.wms.ASN.manage.model.qc.QcResultCriteria;
import com.deer.wms.intercept.common.data.CurrentUser;
import com.deer.wms.project.root.service.SuperService;

import javax.servlet.http.HttpServletResponse;
import java.util.List;
import java.util.Map;


/**
 *
 * @author guo
 * @since 2020/01/15
 */
public interface QcRecordService extends SuperService<QcRecord> {

    /**
     * 质检记录导出方法
     * @param  response     查询条件
     * @since  1.0
     * @deprecated
     */
    void exportExcel(HttpServletResponse response, String keyWords, String asnMasterCode, String acceptRecordCode, String batchName,  String startTime, String endTime) throws Exception;


    /**
     * 根据条件查询
     * @param criteria 查询条件
     * @return List<QcRecordDto>
     */
    List<QcRecordDto> findList(QcRecordCriteria criteria);

    /**
     * 查询退料通知单
     * @param criteria criteria
     * @return List<QcRecordDto>
     */
    List<QcRecordDto> findReturnList(QcRecordCriteria criteria);

    void createFile(String detailNo, CurrentUser currentUser);

    void deleteByDetailNo(String detailNo);

    /**
     * 记录质检结果 生成质检单 <p>
     * 合格/让步 : 回写对应库存状态 <p>
     * 不合格 : 回写库存状态说明为不合格 生成退料单(暂不处理，使用视图)
     * @param criteria 质检结果信息封装对象
     * @param currentUser 当前用户
     * @return
     */
    QcRecord  qcResult(QcResultCriteria criteria,CurrentUser currentUser);

    /**
     * 记录质检撤回
     * @param qcRecordCode 质检单号
     * @param currentUser 当前用户
     * @return
     */
    void  cancelQc(String qcRecordCode,CurrentUser currentUser);

    /**
     * 退料确认
     * @param qcRecords 质检单
     */
    void returnConfirm(List<QcRecord> qcRecords);

    /**
     * 让步
     * @param map key-质检单id  value-让步数量
     */
    void concession(Map<Integer, Double> map);

}
